#ifndef __CE_SCENE_GEOMETRY_H__
#define __CE_SCENE_GEOMETRY_H__

#include <export.h>
#include <iobject.h>

struct iDevice;
struct iMesh;
class ceBoundingBox;
class ceMaterial;
struct ceRenderEnvironment;


/**
 * \addtogroup scene
 * @{
 */

/**
 * @brief Construct for combining a ceMesh and a ceMaterial
 */
class CE_API ceGeometry : public iObject
{
  CE_OBJECT
private:
  iMesh*    _mesh;
  ceMaterial*  _material;

public:
  ceGeometry(iMesh* mesh = 0, ceMaterial* material= 0);
  ~ceGeometry();

  void SetMesh (iMesh* mesh);
  iMesh* GetMesh ();
  const iMesh* GetMesh () const;

  void SetMaterial (ceMaterial* material);
  ceMaterial* GetMaterial ();
  const ceMaterial* GetMaterial () const;

  const ceBoundingBox& GetBoundingBox () const;

  void Update (const ceRenderEnvironment& env, iDevice* device);
};

/** @} */

#endif /* ! __CE_SCENE_GEOMETRY_H__ */
